package com.atguigu.day17.collection02;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
Collection: 集合的顶级接口
    -- List
       -- ArrayList
Collection集合的遍历:
      1.迭代器遍历
      2.增强for遍历(底层是迭代器)
           for(集合元素类型 变量名:集合名){
               变量名:集合内的一个个元素
           }
    注意:
      1. 为什么集合对象可以使用迭代器遍历(增强for) 是因为集合对象是  Iterable接口的孩子
      2. 遍历时通过集合对象增删元素 [可能]发生 并发修改异常
          modCount: 记录对集合修改的次数 增加/删除 都会导致 modCount++
      3.使用迭代器对象删除元素 不会发生并发修改异常

 */
/*class A implements Iterable{
    @Override
    public Iterator iterator() {
        return null;
    }
}*/

public class CollectionFor {
    @Test
    public void test03() {
        //   A a = new A();

    }

    @Test
    public void test02() {
        Collection<String> c = new ArrayList<>();
        c.add("杨幂");
        c.add("赵丽颖");
        c.add("范冰冰");
        c.add("刘亦菲");


        for (String e : c) {
            System.out.println("e = " + e);
        }

    }

    @Test
    public void test01() {
        //多态
        Collection<String> c = new ArrayList<>();
        c.add("杨幂");
        c.add("赵丽颖");
        c.add("范冰冰");
        c.add("刘亦菲");

        //创建迭代器对象
        Iterator<String> iterator = c.iterator();
        while (iterator.hasNext()) {
            String ele = iterator.next();
            System.out.println("ele = " + ele);
        }


    }

    @Test
    public void test04() {
        //多态
        ArrayList<String> c = new ArrayList<>();
        c.add("杨幂");
        c.add("赵丽颖");
        c.add("范冰冰");
        c.add("刘亦菲");
        int size = c.size();


        //创建迭代器对象
        Iterator<String> iterator = c.iterator();
        while (iterator.hasNext()) {
            String ele = iterator.next();
            System.out.println("ele = " + ele);
        }
    }

    @Test
    public void test05() {
        //多态
        ArrayList<String> c = new ArrayList<>();
        c.add("杨幂");
        c.add("赵丽颖");
        c.add("范冰冰");
        c.add("刘亦菲");
        int size = c.size();
        //创建迭代器对象
        Iterator<String> iterator = c.iterator();
        while (iterator.hasNext()) {
            String ele = iterator.next();
            if ("范冰冰".equals(ele)) {
                c.remove("范冰冰");
            }
        }

        System.out.println("c = " + c);
    }

    @Test
    public void test06() {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");

        Iterator<String> iterator = list.iterator();

        while (iterator.hasNext()){
            String ele = iterator.next();
            if("李四".equals(ele)){
               // list.remove("李四");
                iterator.remove();
            }
        }

        System.out.println("list = " + list);

    }


}
